package com.gxg.services;

import java.net.InetAddress;
import java.net.UnknownHostException;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Service;

@Service
public class IpService
{
  public String getIpAddr(HttpServletRequest request)
  {
    String ipAddress = null;
    try
    {
      ipAddress = request.getHeader("x-forwarded-for");
      if ((ipAddress == null) || (ipAddress.length() == 0) || ("unknown".equalsIgnoreCase(ipAddress))) {
        ipAddress = request.getHeader("Proxy-Client-IP");
      }
      if ((ipAddress == null) || (ipAddress.length() == 0) || ("unknown".equalsIgnoreCase(ipAddress))) {
        ipAddress = request.getHeader("HL-Proxy-Client-IP");
      }
      if ((ipAddress == null) || (ipAddress.length() == 0) || ("unknown".equalsIgnoreCase(ipAddress)))
      {
        ipAddress = request.getRemoteAddr();
        if ((ipAddress.equals("127.0.0.1")) || (ipAddress.equals("0:0:0:0:0:0:0:1")))
        {
          InetAddress inetAddress = null;
          try
          {
            inetAddress = InetAddress.getLocalHost();
          }
          catch (UnknownHostException e)
          {
            e.printStackTrace();
          }
          ipAddress = inetAddress.getHostAddress();
        }
      }
      if ((ipAddress != null) && (ipAddress.length() > 15) && 
        (ipAddress.indexOf(",") > 0)) {
        ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
      }
    }
    catch (Exception e)
    {
      ipAddress = "";
      e.printStackTrace();
    }
    return ipAddress;
  }
}
